package com.anuragkapur.ctci.linkedlists; import com.anuragkapur.ds.linkedlist.SinglyLinkedListNode; import java.util.HashSet; import java.util.Set; /** * @author: anuragkapur * @since: 09/06/14 */ public class Prob2_1_UnsortedLinkedList { /** * Running time = O(n) * * @param singlyLinkedListNode * @return */ public static SinglyLinkedListNode removeDuplicates(SinglyLinkedListNode singlyLinkedListNode) { SinglyLinkedListNode dedupedListNode = singlyLinkedListNode; SinglyLinkedListNode currentNode = singlyLinkedListNode; Set<String> duplicateDetectionSet = new HashSet<>(); duplicateDetectionSet.add(dedupedListNode.getPayload()); currentNode = currentNode.getNext(); while (currentNode != null) { if (duplicateDetectionSet.add(currentNode.getPayload())) { dedupedListNode.setNext(currentNode); dedupedListNode = dedupedListNode.getNext(); } currentNode = currentNode.getNext(); } return singlyLinkedListNode; } }